#include <linux/init.h>//包含宏定义得头文件
#include <linux/module.h>//包含初始化加载模块得头文件
#include <linux/i2c.h>
/*包含头文件*/


/*****************iic——client不带设备树写法***********
*驱动文件编写四步骤
(1)包含头文件
(2)驱动模块的入口出口
(3)申明信息
(4)功能实现
*****************/
//分配一个I2C的设备指针
struct i2c_adapter*i2c_ada;

//分配一个i2c_client指针
struct i2c_client*i2c_client;

//支持I2c的设备列表
struct i2c_board_info ft5x06_info[]={
    //每一项都代表一个I2c设备，这话的意思就是这个设备的名字是ft5x06_test,器件地址是0X38
    {I2C_BOARD_INFO("ft5x06_test",0x38)},
    {}
};


static int ft5x05_client_init(void)
{
    //调用i2c_adapter，获得一个I2c总线，ft5x06是挂载到i2c上，所以这个参数就是1所以这句代码
    i2c_ada=i2c_get_adapter(1);
    //把I2C client和I2c器件关联起来
    i2c_client=i2c_new_device(i2c_ada,ft5x06_info);

    i2c_put_adapter(i2c_ada);//释放i2c控制器
    printk("this ft5x05_client_init\n");
    return 0;
}


static void ft5x05_client_exit(void)//退出函数没有返回值
{
    i2c_unregister_device(i2c_client);
    printk("this ft5x05_client_exit\n");
}
/*功能实现*/

module_init(ft5x05_client_init);
module_exit(ft5x05_client_exit);
/*驱动的出口与入口函数都在此处*/
MODULE_LICENSE("GPL");
/*申明信息*/
